package utils.bean;

import java.lang.reflect.Field;

/**
 * bean工具类
 * 
 * @since 2011-9-5
 * @author cbj
 * 
 */
public class BeanUtils {

	private BeanUtils() {
		
	}
	
	/**
	 * 取得对象指定公共域
	 * @param <T>
	 * @param t
	 * @param fieldName
	 * @return
	 */
	public static <T> Field getBeanField(T t,String fieldName){
		Class tClz = t.getClass();
		try {
			return tClz.getField(fieldName);
		} catch (SecurityException e) {
			e.printStackTrace();
		} catch (NoSuchFieldException e) {
			e.printStackTrace();
		}
		return null;
	} 
	
	/**
	 * 取得对象指定声明域(即所有)
	 * @param <T>
	 * @param t
	 * @param fieldName
	 * @return
	 */
	public static <T> Field getBeanDeclareField(T t,String fieldName){
		Class tClz = t.getClass();
		try {
			return tClz.getDeclaredField(fieldName);
		} catch (SecurityException e) {
			e.printStackTrace();
		} catch (NoSuchFieldException e) {
			e.printStackTrace();
		}
		return null;
	}
	
	/**
	 * 取得对象公共域
	 * @param <T>
	 * @param t
	 * @param fieldName
	 * @return
	 */
	public static <T> Field[] getBeanFields(T t){
		Class tClz = t.getClass();
		return tClz.getFields();
	}
	
	
	/**
	 * 取得对象公共域
	 * @param <T>
	 * @param t
	 * @param fieldName
	 * @return
	 */
	public static <T> Field[] getBeanDeclareFields(T t){
		Class tClz = t.getClass();
		return tClz.getDeclaredFields();
	}
	
}
